using System;
using System.Collections.Generic;
using System.Data.Linq;
using System.Linq.Expressions;

namespace SmartClientPlatform.RemoteClientBase
{
    public interface IScopeItem<T>
    {
        IScopeItem<TProperty> Rel<TProperty>(Expression<Func<T, TProperty>> expression);

        IScopeItem<TSetItem> Rel<TSetItem>(Expression<Func<T, EntitySet<TSetItem>>> expression)
            where TSetItem : class;

        IScopeItem<T> Field<TProperty>(Expression<Func<T, TProperty>> expression);
    }

    public interface IScope<T> : IScopeItem<T>
    {
        IEnumerable<T2> GetDto<T2>(Func<T2> func) where T2 : DtoBase<T>;

        List<T2> GetDtoList<T2>(Func<T2> func) where T2 : DtoBase<T>;
    }
}